import isEmpty from 'lodash/isEmpty'
import trim from 'lodash/trim'
import { Toast } from 'vant'
import { translateTitle } from '@/utils/i18n'

//必须带done回调 执行完成调用
export default function pdaClickGetTable({ vm, action, done }) {
  let { getDataKey, tableSelect, errorMsg } = action.extension
  if (tableSelect) {
    let tableDatas = []
    let self = null
    // 选中表格self
    if (!isEmpty(action.extension.tableSelect.value)) {
      self = vm.vuiComponents[action.extension.tableSelect.value[0]]?.self
      let moduleId = vm.info._id
      let _resData = '' //输入框的值。默认输入框model值的对象{}
      let inputItem = vm.vuiComponents[moduleId]
      if (inputItem) {
        _resData = {
          [inputItem.self.info.extension.model.value]: inputItem.self.formDataModel,
        }
      }
      console.log('输入框的值', _resData)

      // 获取单选选中的值
      if (!isEmpty(self)) {
        // 表格选中数据字段
        let choiceFlag = false
        if (!isEmpty(getDataKey.value)) {
          const getDataKeyList = getDataKey.value.split(',')
          let _dataObj = {}
          // 获取单选选中的值
          getDataKeyList.map((item) => {
            item = trim(item)
            // 使用选中的字段，以及输入的值
            self.tdData.forEach((v, i) => {
              if (v[item] === Object.values(_resData)[0]) {
                v.checked = true
                choiceFlag = true
                self.aIndex = 0
                self.tdData.splice(i, 1)[0]
                self.tdData.unshift(v)
              }
            })
          })

          tableDatas = _dataObj
        } else {
          // 没有选中字段，则是用输入框子的model值
          self.tdData.forEach((v, i) => {
            const key = Object.keys(_resData)[0]
            if (v[key] === _resData[key]) {
              v.checked = true
              choiceFlag = true
              self.aIndex = 0
              self.tdData.splice(i, 1)[0]
              self.tdData.unshift(v)
            }
          })
        }
        // 如果没有匹配到选中的值，则提示
        if (!choiceFlag) {
          // 扫描/输入的跟踪号不存在，请检查
          if (errorMsg && errorMsg.value) {
            Toast(errorMsg.value)
          } else {
            Toast(translateTitle('Pda.elements.未匹配到相关数据'))
          }
        }
        inputItem && inputItem.ref && inputItem.ref.blur() //组件失去焦点
        setTimeout(() => {
          inputItem && inputItem.ref && inputItem.ref.focus() //组件聚焦
        }, 2)
        // 获取到选中的值
        tableDatas = self.tdData.filter((v) => {
          return v.checked
        })
        console.log('获取拿到的值1', tableDatas)
        done(null, tableDatas)
      }
    } else {
      //
      Toast(translateTitle('Pda.elements.请在配置中选择表格提示'))
      //   // 修改任务队列执行状态，防止下一次事件被拦截
      vm.onClickIsRunning = false
    }

    // if (self) {

    // } else {
    //   ElMessage({
    //     showClose: true,
    //     message: '获取表单值 - 请选择表单组件！',
    //     type: 'error',
    //   })

    // }
  } else {
    done(null, {})
  }
}
